package com.itheima.extends2modifier; // 声明包路径，表示这个类位于com.itheima.extends2modifier包下

public class Fu { // 定义Fu类（父类），使用public修饰符表示可以被其他包访问
    // 1、private：只能当前类中访问。 - 这行注释解释了private访问修饰符的作用范围
    private void privateMethod(){ // 定义一个私有方法privateMethod，只能在Fu类内部访问
        System.out.println("privateMethod"); // 打印输出字符串"privateMethod"
    }

    // 2、缺省：只能当前类中，同一个包下的其他类中 - 这行注释解释了缺省访问修饰符的作用范围
    void method(){ // 定义一个缺省方法method（没有显式的访问修饰符），可以在同一个包内访问
        System.out.println("method"); // 打印输出字符串"method"
    }

    // 3、protected：只能当前类中，同一个包下的其他类中，子孙类中访问 - 这行注释解释了protected访问修饰符的作用范围
    protected void protectedMethod(){ // 定义一个受保护的方法protectedMethod，可以在本类、同包和子类中访问
        System.out.println("protectedMethod"); // 打印输出字符串"protectedMethod"
    }

    // 4、public：任何类中都可以访问 - 这行注释解释了public访问修饰符的作用范围
    public void publicMethod(){ // 定义一个公共方法publicMethod，可以在任何地方访问
        System.out.println("publicMethod"); // 打印输出字符串"publicMethod"
    }

    public static void main(String[] args) { // 定义程序的主方法，是Java程序的入口点
        Fu fu = new Fu(); // 创建Fu类的对象，使用关键字new实例化，并将对象引用赋值给变量fu
        fu.privateMethod(); // 调用私有方法privateMethod，因为在同一个类中，所以可以访问
        fu.method(); // 调用缺省方法method，在同一个类中当然可以访问
        fu.protectedMethod(); // 调用受保护方法protectedMethod，在同一个类中当然可以访问
        fu.publicMethod(); // 调用公共方法publicMethod，在任何地方都可以访问
    }
}
